package com.usooft.metaTalent.core.system.service;

import com.usooft.framework.core.query.Page;
import com.usooft.metaTalent.core.system.entity.Role;
import com.usooft.metaTalent.core.system.entity.RolePermission;
import com.usooft.metaTalent.core.system.query.RolePermissionQuery;
import com.usooft.metaTalent.core.system.wrapper.RolePermissionWrapper;
import org.springframework.lang.NonNull;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.lang.Long;

public interface RolePermissionService {

    // region 自动生成
    RolePermission get(Long id);

    Optional<RolePermission> find(Long id);

    List<RolePermissionWrapper> list(RolePermissionQuery query);

    Page<RolePermissionWrapper> page(RolePermissionQuery query);

    int count(RolePermissionQuery.Filter filter);
    // endregion

    Set<String> listPermissionsByRoleId(@NonNull Long roleId);

    void grant(@NonNull Role role, String... expressions);
}